﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SqlClient;

namespace FrbaCommerce
{
    public class Visibilidad
    {
        public int codigo { get; set; }
        public string descripcion { get; set; }
        public decimal precio { get; set; }
        public decimal porcentaje { get; set; }
        public int duracion { get; set; }
        public bool habilitado { get; set; }

        public void Guardar(Visibilidad nuevaVisibilidad) 
        {
            //bool resultado = true;
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "INSERT INTO ASDF.Visibilidad VALUES ";
            query += "( " + nuevaVisibilidad.codigo + ",'" + nuevaVisibilidad.descripcion.ToString() + "' ," + (nuevaVisibilidad.precio.ToString()).Replace(',', '.') + " ," + (nuevaVisibilidad.porcentaje.ToString()).Replace(',', '.') + ", " + nuevaVisibilidad.duracion + ", " + Convert.ToInt16(nuevaVisibilidad.habilitado) + " )";
            conexion.ejecutarConsulta(query);            
        }

        public void Actualizar(Visibilidad visibilidad) 
        {
            //bool resultado = true;
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = " UPDATE ASDF.Visibilidad SET ";
            query += " descripcion = '" + visibilidad.descripcion + "', precio= " + (visibilidad.precio.ToString()).Replace(',', '.') + ", porcentaje = " + (visibilidad.porcentaje.ToString()).Replace(',', '.') + " , ";
            query += " habilitado = " + Convert.ToInt16(visibilidad.habilitado) + " , duracion = " + visibilidad.duracion + " WHERE codigo = " + visibilidad.codigo + " ";
            conexion.ejecutarConsulta(query);
            //return resultado;
        }        

        public bool BuscarPorCodigo(int codigo)
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT COUNT(*) FROM ASDF.Visibilidad WHERE codigo = " + codigo + " ";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            if (Convert.ToInt16(fila.ItemArray[0].ToString()) == 0)
                return false;
            else
                return true;            
        }

        public Visibilidad ObtenerVisibilidadPorCod(int codigo)
        {
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT * FROM ASDF.Visibilidad WHERE codigo = " + codigo + " ";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            Visibilidad visibilidad = this.cargarVisibilidad(fila);
            return visibilidad;
        }

        public int BuscarIdPorDescripcion(string descripcion)
        {
            int id;
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = " SELECT codigo FROM ASDF.Visibilidad WHERE descripcion = '" + descripcion + "' ";
            datos = conexion.ejecutarConsulta(query);
            DataRow fila = datos.Tables[0].Rows[0];
            id = Convert.ToInt32(fila.ItemArray[0].ToString());
            return id;
        }

        public List<Visibilidad> BuscarVisibilidades(string descripcion) 
        {
            List<Visibilidad> visibilidades = new List<Visibilidad>();
            ConexionSql conexion = new ConexionSql();
            DataSet datos = new DataSet();
            string query = "SELECT * FROM ASDF.Visibilidad WHERE descripcion = '" + descripcion + " ' ";
            datos = conexion.ejecutarConsulta(query);
            foreach (DataRow fila in datos.Tables[0].Rows) 
            {
                visibilidades.Add(this.cargarVisibilidad(fila));
            }
            return visibilidades;
        }
      
        public void cargarCombo(ComboBox cmbVisibilidad) 
        {
            string query = "SELECT descripcion FROM ASDF.Visibilidad ";
            ConexionSql conexionSql = new ConexionSql();
            DataSet datos = new DataSet();
            datos = conexionSql.ejecutarConsulta(query);
            cmbVisibilidad.DataSource = null;
            foreach (DataRow dataRow in datos.Tables[0].Rows)
            {
                cmbVisibilidad.Items.Add(dataRow[0]);
            }     
        }

        private Visibilidad cargarVisibilidad(DataRow fila) 
        {
            Visibilidad visibilidad = new Visibilidad();
            visibilidad.codigo = Convert.ToInt32(fila.ItemArray[0].ToString());
            visibilidad.descripcion = fila.ItemArray[1].ToString();
            visibilidad.precio = Convert.ToDecimal(fila.ItemArray[2].ToString());
            visibilidad.porcentaje = Convert.ToDecimal(fila.ItemArray[3].ToString());
            visibilidad.duracion = Convert.ToInt32(fila.ItemArray[4].ToString());
            visibilidad.habilitado = Convert.ToBoolean(fila.ItemArray[5].ToString());
            return visibilidad;
            
        }
    }

    
}
